<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .loading {
      width: 100px;
      height: 100px;
      border: 1px solid;
      float: left;
      margin-right: 20px;
      position: relative;
      
    }

    .loading1 i {
      display: block;
      box-sizing: border-box;
      width: 30px;
      height: 30px;
      border: 5px solid;
      border-radius: 50%;
      border-left-color: transparent;
      border-right-color: transparent;
      position: absolute;
      top: 50%;
      margin-top: -15px;
      left: 50%;
      margin-left: -15px;
      animation: loading1 .3s linear infinite;
    }
  
    @keyframes loading1 {
      100% {
        transform: rotate(180deg);
      }
    }


    .loading2:after, .loading2::before {
      content: '';
      width: 30px;
      height: 30px;
      background: rgba(99,99,99,0.6);
      border-radius: 50%;
      position: absolute;
      top: 50%;
      margin-top: -15px;
      left: 50%;
      margin-left: -15px;
    }

    .loading2:after {
      animation: loading2 .8s ease-in infinite alternate;
    }
    .loading2:before {
      animation: loading2 .8s ease-in infinite alternate-reverse;
    }
    @keyframes loading2 {
      0% {
        transform: scale(1);
      }
      100% {
        transform: scale(0);
      }
    }


    .loading3 i{
      width: 50px;
      height: 50px;
      position: absolute;
      top: 50%;
      margin-top: -25px;
      left: 50%;
      margin-left: -25px;
      animation: loading3 2s infinite linear;
    }
    .loading i::after, .loading3 i::before {
      content: "";
      width: 20px;
      height: 20px;
      border-radius: 50%;
      background: #000;
      margin-top: 15px;
    }
    .loading3 i::before {
      float: left;
      animation: loading3i 1s linear infinite alternate;
    }
    .loading3 i::after {
      margin-right: 10px;
      float: right;
      animation: loading3i 1s linear infinite alternate-reverse;
    }
    @keyframes loading3i {
      0% {
        transform: scale(1);
      }
      100% {
        transform: scale(0);
      }
    }
    @keyframes loading3 {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }

    .loading4 {
      transform-style: preserve-3d;
      perspective: 300px;
    }
    .loading4::before, .loading4::after {
      content: "";
      display: block;
      
      height: 30px;
      width: 30px;
      border-radius: 50%;
      /* transform: rotateX(70deg); */
    }
    .loading4::before {
      border-top: 10px solid;
      animation: loading4 1s linear infinite;
    }
    .loading4::after {
      border-bottom: 10px solid;
    }

    @keyframes loading4 {
      0% {
        transform: rotateX(70deg) rotateY(30deg)  rotateZ(0deg);
      }
      100% {
        transform: rotateX(70deg) rotateY(30deg) rotateZ(360deg);
      }
    }
  </style>
</head>
<body>
  <div class="loading loading1">
    <i></i>
  </div>

  <div class="loading loading2">
  </div>

  <div class="loading loading3">
    <i></i>
  </div>

  <div class="loading loading4">
    
  </div>
</body>
</html>